template <typename T>
void swap1(T **p, T **q);
template <typename T>
void swap2(T &p, T &q);
template <typename T>
void swap3(T *p, T *q);
int test_swap();

void test_point_call();

int test_nested_call_main();

int test_return_type();

int point_heap_test();

int multiple_call();